Generally caching of block device data at a relatively lower latency device provides phenomenal performance for both read and write input/output (“I/O”) operations. As a read cache, data is stored in the cache device until it is replaced with the new data. Until then, the data is read from the cache device for subsequent read I/O operations directed to the same data block. As a write cache, new data is written to the cache device, and the write I/O operation is informed completed. Later based on policy, the dirty data stored in the cache device is persisted to the underlying stable medium. In addition, the cache device can be a solid state device (“SSD”). When compared to a hard disk drive, SSD devices have superior read and write performance. It is therefore desirable to maximize use of the SSD device(s) as the cache device to achieve a greater performance advantage.
In some data storage systems, a plurality of SSD devices can be used as the cache device. As described above, flushing operations can be performed to transfer dirty data from the SSD devices to the underlying data storage medium, for example, when there is cache pressure and/or if one of the SSD devices fails. However, flushing dirty data from the SSD devices to the underlying data storage medium may not be a quick process. Therefore, it is desirable to provide techniques for efficiently performing cache flushing operations.